package com.mjf.draw;

import sun.print.ProxyGraphics2D;

import javax.swing.*;
import java.awt.*;

/**
 * 演示在画板上画圆
 */
public class DrawCircle extends JFrame {    // JFrame 对应一个窗口

    //定义一个面板
    private MyPanel mp = null;

    public static void main(String[] args) {

        new DrawCircle();

    }

    public DrawCircle() {//构造器
        //初始化面板
        mp = new MyPanel();
        //把面板放入到窗口(画框)
        this.add(mp);
        //设置窗口的大小
        this.setSize(400, 300);
        //当点击窗口的小×，程序完全退出.
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);//可以显示
    }

}

// 继承 JPanel 类绘制图形,对应一个画板
class MyPanel extends JPanel {

    // 1.当组件第一次在屏幕上显示的时候，程序会自动调用paint方法
    // 2.窗口最小化再最大化的时候，程序会自动调用paint方法
    // 3.窗口大小发生改变的时候，程序会自动调用paint方法
    // 4.repaint方法被调用的时候，程序会自动调用paint方法
    @Override
    public void paint(Graphics g) { // 重写绘图方法
        super.paint(g); // 调用父类进行初始化

        System.out.println("paint方法被调用");

        // 画出一个圆，g 对应一个画笔
        g.drawOval(10, 10, 100, 100);


        // 演示绘制不同的图形..
        // 画直线 drawLine(int x1,int y1,int x2,int y2)
        // g.drawLine(10, 10, 100, 100);
        // 画矩形边框 drawRect(int x, int y, int width, int height)
        // g.drawRect(10, 10, 100, 100);
        // 画椭圆边框 drawOval(int x, int y, int width, int height)
        // 填充矩形 fillRect(int x, int y, int width, int height)
        // 设置画笔的颜色
//        g.setColor(Color.blue);
//        g.fillRect(10, 10, 100, 100);

        // 填充椭圆 fillOval(int x, int y, int width, int height)
//        g.setColor(Color.red);
//        g.fillOval(10, 10, 100, 100);

        // 画图片 drawImage(Image img, int x, int y, ..)
        // 1. 获取图片资源, /bg.png 表示在该项目的根目录去获取 bg.png 图片资源
//        Image image = Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/bg.png"));
//        g.drawImage(image, 10, 10, 175, 221, this);
        // 画字符串 drawString(String str, int x, int y)//写字
        // 给画笔设置颜色和字体
        g.setColor(Color.red);
        g.setFont(new Font("隶书", Font.BOLD, 50));
        // 这里设置的 100， 100， 是 "北京你好"左下角
        g.drawString("北京你好", 100, 100);
        // 设置画笔的字体 setFont(Font font)
        // 设置画笔的颜色 setColor(Color c)
    }

}
